/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import javax.swing.JOptionPane;

/**
 *
 * @author Jorge Maldonado
 */
public class estacion extends propiedad{

    public estacion(int id,String descripcion,float precio){
        this.descripcion = descripcion;
        this.precio=precio;
        tipo=TIPO_ESTACION;
        this.id=id;
    }
    @Override
    public void adquirir(usuario propietario) {
        this.propietario = propietario;

    }

    @Override
    public void cobrar(usuario pasa) {
       if (pasa != propietario) {
            if (pasa.getDinero() < getCosto()) {
                if (pasa.tienePropiedades()) {
                    int resultado = JOptionPane.showConfirmDialog(null, "Desea hipotecar una propiedad para pagar?", "Atención", JOptionPane.INFORMATION_MESSAGE);
                    if (resultado == JOptionPane.OK_OPTION) {
                        hipoteca aux = new hipoteca(pasa);
                        propiedad temp = aux.mostrar();
                        if (temp != null) {
                            pasa.hipotecarPropiedad((lote) temp);
                            cobrar(pasa);
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "No dispone de dinero, por lo tanto se hará un prestamo al banco para cubrir la deuda", "Atencion", JOptionPane.INFORMATION_MESSAGE);
                        propietario.prestarDinero(pasa.getDinero() - getPrecio());
                        cobrar(pasa);
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "No dispone de dinero, por lo tanto se hará un prestamo al banco para cubrir la deuda", "Atencion", JOptionPane.INFORMATION_MESSAGE);
                    propietario.prestarDinero(pasa.getDinero() - getPrecio());
                    cobrar(pasa);
                }
            } else {
                propietario.setDinero(propietario.getDinero() + getCosto());
                pasa.setDinero(pasa.getDinero() - getCosto());
                JOptionPane.showMessageDialog(null, "Usted ha pagado la suma de " + Float.toString(getCosto()), "Atencion", JOptionPane.INFORMATION_MESSAGE);

            }
        }
    }

    @Override
    public void Accion(usuario pasa) {
        if (propietario == null) {
            compra_estacion cmp = new compra_estacion(descripcion);
            int resultado = cmp.mostrar();
            if (resultado == compra.COMPRA) {
                if(pasa.getDinero()<this.precio){
                    JOptionPane.showMessageDialog(null, "Error, no cuenta con suficientes fondos", "Error", JOptionPane.ERROR_MESSAGE);
                    Accion(pasa);
                    return;
                }
                this.propietario = pasa;
                pasa.setDinero(pasa.getDinero() - getPrecio());
                pasa.getPropiedades().add(this);
                pasa.setNum_servicios(pasa.getNum_servicios()+1);
                JOptionPane.showMessageDialog(null, "Ha adquirido la propiedad!!", "Atencion", JOptionPane.INFORMATION_MESSAGE);
            }else{
                new subasta(Tablero.jugadores,this).setVisible(true);
            }
        } else {
            cobrar(pasa);
        }
    }
    public float getCosto(){
        if(propietario.getNum_servicios()==1)
            return Tablero.res_Dados*4;
        else if(propietario.getNum_servicios()==2)
            return Tablero.res_Dados*10;
        else if(propietario.getNum_servicios() == 3)
            return Tablero.res_Dados*15;
        else
            return Tablero.res_Dados*20;
    }

    @Override
    public void Vender(usuario prop) {
        this.propietario.getPropiedades().remove(this);
        prop.getPropiedades().add(this);
        adquirir(prop);
    }
}
